package net.marloncarvalho.loteriaz.rn;

import net.marloncarvalho.loteriaz.dao.DAOException;
import net.marloncarvalho.loteriaz.dao.DAOGenerico;
import net.marloncarvalho.loteriaz.dao.hibernate.DAOHibernate;
import net.marloncarvalho.loteriaz.entidades.EntidadePersistente;

@SuppressWarnings("unchecked")
public class NegocioCRUD implements INegocioCRUD {
	private DAOGenerico dao = new DAOHibernate();
	private Class classe;
	
	public NegocioCRUD(DAOGenerico dao) {
		if ( dao != null ) 
			this.dao = dao;
	}

	public NegocioCRUD() {
	}

	public void salvar(EntidadePersistente entidade) throws NegocioException {
		try {
			this.dao.salvar(entidade);
		} catch (DAOException e) {
			throw new NegocioException(e);
		}
	}

	public DAOGenerico getDao() {
		return dao;
	}

	public void setDao(DAOGenerico dao) {
		this.dao = dao;
	}

	public EntidadePersistente obter(Long id) throws NegocioException {
		try {
			return this.dao.obter(id, classe);
		} catch (DAOException e) {
			throw new NegocioException(e);
		}
	}

	public Class getClasse() {
		return classe;
	}

	public void setClasse(Class classe) {
		this.classe = classe;
	}

}